package net.java.mediasystems.database.core.service;

import java.util.List;

import net.java.mediasystems.database.core.model.MediaType;

/**
 * FindableWithNameAndMediaType.
 */
public interface FindableWithNameAndMediaType<T> {
	
	/**
	 * Get all T by their MediaTypes.
	 * 
	 * @param mediaType MediaType
	 * @return List<T>
	 */
	public List<T> getByMediaType(MediaType mediaType);
	
	/**
	 * Get a T by Media-Type and Name.
	 * <br/><br/>
	 * 
	 * SearchCriteria:
	 * <ul>
	 * <li>MediaType: case-sensitive</li>
	 * <li>Name: not case-sensitive</li> 
	 * </ul>
	 * 
	 * @param mediaType MediaType
	 * @param name String
	 * @return T
	 */
	public T getByMediaTypeAndName(MediaType mediaType, String name);
}
